package com.jing.system.utils.freeze;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.time.DateUtils;

import com.jing.system.utils.DateUtil;


/**
 * 冻结用户分享它的工具类
 * @author jing.yue
 * @version 1.0
 * @since 2012-11-13
 */
public class FreezeShareWeiboUserUtil {

	private static final String ADD = "add";
	public static final String UPDATE = "update";
	/** 分享它 */
	public static final Integer SHARE_WEIBO_NUM = 5;

	/**
	 * 记录用户分享它的次数信息
	 */
	private static Map<String, FreezeUser> shareWeiboFreezeMap = new HashMap<String, FreezeUser>();

	/**
	 * 获取用户分享它的信息
	 * @param username
	 * @return	返回结果小于等于0代表不能分享了
	 */
	public static Integer getShareWeiboFreezeUser(String username) {
		Date newtime = DateUtil.getTime();
		FreezeUser freezeUser = shareWeiboFreezeMap.get(username);
		//达到解冻时间或没有冻结
		if(freezeUser == null) {
			addShareWeiboFreezeUser(username, ADD);
		}
		//不是同一天添加新的覆盖原来的记录
		else if(!DateUtil.dateToString(newtime, DateUtil.FMT_YYYY_MM_DD).equals(DateUtil.dateToString(freezeUser.getFreezetime(), DateUtil.FMT_YYYY_MM_DD))) {
			addShareWeiboFreezeUser(username, ADD);
		}
		return (SHARE_WEIBO_NUM - shareWeiboFreezeMap.get(username).getNum());
	}

	/**
	 * 添加用户分享它的信息
	 * @param username		用户名
	 * @param type			调用类型[add第一次生成/update次数累加修改]
	 */
	public static void addShareWeiboFreezeUser(String username, String type) {
		Date newtime = DateUtil.getTime();
		FreezeUser freezeUser = shareWeiboFreezeMap.get(username);
		if(ADD.equals(type)) {
			freezeUser = new FreezeUser();
			freezeUser.setUsername(username);
			freezeUser.setFreezetime(newtime);
			//解冻时间为一天
			freezeUser.setUnfreezetime(DateUtils.addDays(newtime, 1));
			//分享次数
			freezeUser.setNum(0);
		} else if(UPDATE.equals(type)) {
			//累加次数
			freezeUser.setNum(freezeUser.getNum().intValue() + 1);
		}

		shareWeiboFreezeMap.put(username, freezeUser);
	}

}